// 给你一个整数数组 nums ，请你找出数组中乘积最大的连续子数组（该子数组中至少包含一个数字），并返回该子数组所对应的乘积。

#include<bits/stdc++.h>
#include<string>
#include<vector>
#include<list>
#include<unordered_map>
#include<set>
#include<queue>
using namespace std;
// 可能出现负数，一个变量无法解决

class Solution {
public:
    int maxProduct(vector<int>& nums) {
        vector<int> dp(nums.size());
        dp[0]= nums[0];
        for(int i=1;i<nums.size();i++){
            dp[i] = max(nums[i],dp[i-1]*nums[i]);
        }
        int imax = dp[0];
        for(int i=1;i<dp.size();i++){
            imax = max(imax,dp[i]);
        }
        return imax;
    }
};